Defines a generalized alpha integrator for dense matrix systems.
Copies system matrices and allocates reusable workspace.
Copies dense matrices and computes generalized-alpha coefficients once.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_generalized_alpha_integrator), | intent(inout) | :: | this |
Integrator to initialize or reinitialize. |
||
| real(kind=real64), | intent(in), | dimension(:,:) | :: | mass |
The N-by-N mass matrix. |
|
| real(kind=real64), | intent(in), | dimension(:,:) | :: | damping |
The N-by-N damping matrix. |
|
| real(kind=real64), | intent(in), | dimension(:,:) | :: | stiffness |
The N-by-N stiffness matrix. |
|
| real(kind=real64), | intent(in), | optional | :: | rho_infinity |
High-frequency spectral radius in [0, 1], default 1. |
Advances a state through successive columns of a force history.
Advances through a force history with one column per time point. The number of steps is size(forces, 2) - 1; only the final state is returned.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(structural_integrator), | intent(inout) | :: | this |
Initialized dense or sparse integrator. |
||
| real(kind=real64), | intent(in), | dimension(:,:) | :: | forces |
N-by-(number of steps + 1) array of external forces. |
|
| real(kind=real64), | intent(in) | :: | dt |
Positive constant time step. |
||
| real(kind=real64), | intent(inout), | dimension(:) | :: | displacement |
Initial state on input, final state on output. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | velocity |
Initial state on input, final state on output. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | acceleration |
Initial state on input, final state on output. |
Advances one step using cached dense LU when dt is unchanged.
Advances a linear structural system by one generalized-alpha step. Let the input state be indexed by n and the output state by n+1. The method solves the weighted equilibrium
The high-frequency spectral radius determines
With and , solve , where
Finally, and . At , this is the average-acceleration (trapezoidal) Newmark scheme.
The LU factorization of A is reused whenever the time step is unchanged.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_generalized_alpha_integrator), | intent(inout) | :: | this |
The dense_generalized_alpha_integrator object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | force_current |
The current N-element external forcing vector. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | force_next |
The N-element external forcing vector at t + dt. |
|
| real(kind=real64), | intent(in) | :: | dt |
The time step. |
||
| real(kind=real64), | intent(inout), | dimension(:) | :: | displacement |
The N-element displacement state vector. On output, this vector is updated to the state at t + dt. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | velocity |
The N-element velocity state vector. On output, this vector is updated to the state at t + dt. |
|
| real(kind=real64), | intent(inout), | dimension(:) | :: | acceleration |
The N-element acceleration state vector. On output, this vector is updated to the state at t + dt. |